'''
优点：
    1）降低耦合度：一个对象无需知道是其他哪一个对象处理其请求
'''

from abc import ABCMeta, abstractmethod

class Handler(metaclass=ABCMeta):
    @abstractmethod
    def handle_leave(self,day):
        pass

class GeneralManager(Handler):
    def handle_leave(self, day):
        if day <= 10:
            print("总经理准假%d天"% day)
        else:
            print("你还是辞职吧！")

class DepartmentManager(Handler):
    def __init__(self) -> None:
        self.next = GeneralManager()

    def handle_leave(self, day):
        if day <= 5:
            print("部门经理准假%d天"% day)
        else:
            print("部门经理职权不足")
            self.next.handle_leave(day)

class ProjectDirector(Handler):
    def __init__(self) -> None:
        self.next = DepartmentManager()

    def handle_leave(self, day):
        if day <= 3:
            print("项目主管准假%d天"% day)
        else:
            print("项目主管职权不足")
            self.next.handle_leave(day)


if __name__ == '__main__':
    ProjectDirector().handle_leave(10)